/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package Facades;

import Entidades_Persistencia.Proyecto;
import java.util.List;
import javax.ejb.Stateless;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;

/**
 *
 * @author joselvr
 */
@Stateless
public class ProyectoFacade extends AbstractFacade<Proyecto> {
    @PersistenceContext(unitName = "EvaproyPU")
    private EntityManager em;

    protected EntityManager getEntityManager() {
        return em;
    }

    public ProyectoFacade() {
        super(Proyecto.class);
    }
    
    
 
    
    
    
    
    
    
    public List buscarProyEval(int codEval) {
        List proyectos= (List)em.createQuery("SELECT p FROM Proyecto p, EvaluacionProyecto e "
                + "WHERE p=e.codigoProyecto AND e.codigoEvaluador.codigo="+codEval)
                .getResultList();
        return proyectos;
    }
    
    /*busquedas de proyectos por parte de un empleado empleado**/
    
    /**busca proyectos por nombre de proyecto*/
     public List buscarProyEmpleadoNombreProy(String Nombreproy) {
        List proyectos= (List)em.createQuery("SELECT p"
                + " FROM Proyecto p"
                + " WHERE p.nombre LIKE '%"+Nombreproy+"%'")
                .getResultList();
        return proyectos;
    }
     
     /**
      busca proyectos por nombre departamento
      
      **/
     public List buscarProyEmpleadoDepartamentoProy(int codNombreDepart) {
        List proyectos= (List)em.createQuery("SELECT p"
                + " FROM Proyecto p "
                + " WHERE p.departamento.codigo="+codNombreDepart)
                .getResultList();
        return proyectos;
    }
    
     /**consultas los poryectos de una persona determinada
      **/
      public List buscarProyEmpleadoResponsableProy(String Responsable) {
        List proyectos= (List)em.createQuery("SELECT p "
                + " FROM Proyecto p"
                + " WHERE p.responsable.persona.nombres LIKE '%"+Responsable+"%'")
                .getResultList();
        return proyectos;
    }
      
      /*consultas todos los proyectos del mismo empleado por nnombre de su proyecto*/
        public List buscarProyPropios(String NombreProy, int codResponsable) {
        List proyectos= (List)em.createQuery("SELECT p FROM Proyecto p"
                + " WHERE p.responsable.codigo ="+codResponsable+" AND p.nombre LIKE '%"+NombreProy+"%'")
                .getResultList();
        return proyectos;
    }
        
     /*lista todos los proyectos del empleado*/
        public List ProyectosEmpleado(int codResponsable) {
        List proyectos= (List)em.createQuery("SELECT p FROM Proyecto p"
                + " WHERE p.responsable.codigo ="+codResponsable)
                .getResultList();
        return proyectos;
    }    
        /*fin busqeudas de un proyecto por un empleado*/
        
        
        
        
        /*busquedas de proyectos por parte de un jefeID*/
    
    /**busca proyectos por nombre de proyecto */
     public List buscarProyJefeIDNombreProy(String Nombreproy) {
        List proyectos= (List)em.createQuery("SELECT p "
                + " FROM Proyecto p"
                + " WHERE p.nombre LIKE '%"+Nombreproy+"%'")
                .getResultList();
        return proyectos;
    }
     
       
     /**consultas los poryectos de una persona determinada
      **/
      public List buscarProyJefeIDResponsableProy(String Responsable) {
        List proyectos= (List)em.createQuery("SELECT p"
                + " FROM Proyecto p"
                + " WHERE  p.responsable.persona.nombres LIKE '%"+Responsable+"%'")
                .getResultList();
        return proyectos;
    }
      
      
        
     /*lista todos los proyectos de un departamento*/
        public List ProyectosJefeID(int codDepartamento) {
        List proyectos= (List)em.createQuery("SELECT p FROM Proyecto p"
                + " WHERE p.departamento.codigo="+codDepartamento)
                .getResultList();
        return proyectos;
    }    
        /*fin busqueda de JefeID*/
        
        
        
        /********************/
        
        
        /*busquedas de proyectos por parte de un jefe Departamento*/
    
    /**busca proyectos por nombre de proyecto */
     public List buscarProyJefeDepartamentoNombreProy(String Nombreproy , int codDepartamento) {
        List proyectos= (List)em.createQuery("SELECT p "
                + " FROM Proyecto p"
                + " WHERE p.departamento.codigo="+codDepartamento+" AND p.nombre LIKE '%"+Nombreproy+"%'")
                .getResultList();
        return proyectos;
    }
     
       
     /**consultas los poryectos de una persona determinada en el departamento al cual pertenece el jefeDepartamento
      **/
      public List buscarProyJefeDepartamentoResponsableProy(String Responsable , int codDepartamento) {
        List proyectos= (List)em.createQuery("SELECT p"
                + " FROM Proyecto p"
                + " WHERE p.departamento.codigo="+codDepartamento+" AND  p.responsable.persona.nombres LIKE '%"+Responsable+"%'")
                .getResultList();
        return proyectos;
    }
      
      
        
     /*lista todos los proyectos del departamento al que pertenece el jefeDepartamento*/
        public List ProyectosJefeDepartamento(int codDepartamento) {
        List proyectos= (List)em.createQuery("SELECT p FROM Proyecto p"
                + " WHERE p.departamento.codigo="+codDepartamento)
                .getResultList();
        return proyectos;
    }    
        /*fin busqueda de Jefe Departamento*/
        
}


